/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package be.hogent.iii.project.common.bericht;

import be.hogent.iii.project.common.game.objecten.Spel;
import be.hogent.iii.project.objects.Entiteit;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

/**
 *
 * @author Dieter Van der Stock
 */
public class Base64VolgendeBeurtBericht extends Bericht{

    private String nicknameAanbeurt;
    private String base64String;
    private Spel spel;
    
    /**
     * Deze klasse kan een lijst van entiteiten aannemen en omzetten in een geserialiseerde Base 64 string,
     * welke geschikt is om door te sturen via XML zonder dataverlies. 
     * De handler zal deze string terug omzetten naar een lijst van entiteiten.
     */
    public Base64VolgendeBeurtBericht(){
        
    }
    
    /**
     * We gaan entiteiten serialiseren tot een base64 string
     * @param entiteiten
     */
    public Base64VolgendeBeurtBericht(ArrayList<Entiteit> entiteiten, String nickname, Spel spel){
        this.spel = spel;
        this.nicknameAanbeurt = nickname;
        
        try {
            //we schrijven de entiteiten weg in een stream
            ByteArrayOutputStream outByte = new ByteArrayOutputStream();
            ObjectOutputStream outObject = new ObjectOutputStream(outByte);
            outObject.writeObject(entiteiten);
            
            //de verkregen serialisatie omzetten naar een string met Base64 encodering, geschikt om door te sturen
            this.base64String = Base64.encode(outByte.toByteArray());
            
            outByte.close();
            outObject.close();
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }

    public String getBase64String() {
        return base64String;
    }
    
    public void setBase64String(String base64String) {
        this.base64String = base64String;
    }

    public String getNicknameAanbeurt() {
        return nicknameAanbeurt;
    }

    public void setNicknameAanbeurt(String nicknameAanbeurt) {
        this.nicknameAanbeurt = nicknameAanbeurt;
    }

    public Spel getSpel() {
        return spel;
    }

    public void setSpel(Spel spel) {
        this.spel = spel;
    }
    
    
}

